package cl.utfsm.isw.mecanico.dao;


import java.io.Reader;
import java.util.HashMap;
import java.util.List;

import cl.utfsm.isw.mecanico.cliente.to.ClienteTO;
import cl.utfsm.isw.mecanico.to.ProductoTO;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

/**s
 * @author Rodrigo Alejandro
 *
 */
public class ProductoDAO {
	
	
	private static String SQLMAP = "tablas/producto/sqlMapProducto.xml";
	/**
	 * 
	 * @param rut
	 * @return
	 * @throws Exception
	 */
	public ProductoTO consultarProductoDesc(String desc) throws Exception{
		
		System.out.println("[ProductoDAO][consultarProductoDesc] en ClienteDAO");
		ProductoTO producto = null;
		
		try {
		
			HashMap parametros = new HashMap();
			parametros.put("descripcion", desc);
			
			System.out.println("[ProductoDAO][consultarProductoDesc] parametros: "+parametros.toString());
			String resource = SQLMAP;
			Reader reader = Resources.getResourceAsReader(resource);
			SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
			
			List resultado = sqlMap.queryForList("consultarArticuloDesc", parametros);
			
			System.out.println("[ProductoDAO][consultarProductoDesc] Salida: "+ resultado.toString());
			
			if (resultado != null) {            
				System.out.println("[ProductoDAO][consultarProductoDesc] dentro de if");
	            if (resultado.size() > 0) {
	            	System.out.println("[ProductoDAO][consultarProductoDesc] dentro de if");
	            	producto = new ProductoTO();
	            	System.out.println("[ProductoDAO][consultarProductoDesc] despues de crear producto");
	                HashMap salida = (HashMap) resultado.get(0);
	                System.out.println("[ProductoDAO][consultarProductoDesc] despues de casteo");
	                producto.setIdArticulo((int) salida.get("id_Articulo"));                
	                producto.setDescripcion((String)salida.get("descripcion"));
	                producto.setMarca((String)salida.get("marca"));
	                producto.setStock((int) salida.get("stock"));
	                producto.setValorCompra((int) salida.get("valor_compra"));
	            }
	            
			}		
			System.out.println("[ProductoDAO][consultarProductoDesc] Retorno: "+ producto.toString());		
			return producto;
		}catch(Exception e){
			System.out.println("[ProductoDAO][consultarProductoDesc] ERROR "+e.toString());
			return null;
		}		
	}
	

	/**
	 * 
	 * @param clienteIngreso
	 * @return
	 * @throws Exception
	 */
	public boolean ingresarProducto(ProductoTO producto) throws Exception{
		
		System.out.println("[ProductoDAO][ingresarProducto] en ClienteDAO");
		try{
			HashMap parametros = new HashMap();
			parametros.put("descripcion", producto.getDescripcion());
			parametros.put("marca", producto.getMarca());
			parametros.put("valorCompra", Long.parseLong(String.valueOf(producto.getValorCompra())));
					
			
			System.out.println("[ProductoDAO][ingresarProducto] parametros: "+parametros.toString());
			String resource = SQLMAP;
			Reader reader = Resources.getResourceAsReader(resource);
			SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
			
			List resultado = sqlMap.queryForList("ingresarProducto", parametros);
			
		}catch(Exception e){
			System.out.println("[ProductoDAO][ingresarProducto] ERROR : "+e.toString());
			throw e;
		}
		
		
		System.out.println("[ingresarProducto] datos : "+ producto.toString());
		
		return true;
	}
	
	
	/**
	 * 
	 * @param producto
	 * @return
	 * @throws Exception
	 */
	public boolean modificarProducto(ProductoTO producto) throws Exception{
		
		System.out.println("[ProductoDAO][modificarProducto] en ClienteDAO");
		try{
			HashMap parametros = new HashMap();
			parametros.put("id", producto.getIdArticulo());
			parametros.put("categ", "");
			parametros.put("descrip", producto.getDescripcion());
			parametros.put("marca", producto.getMarca());
			parametros.put("tipo", "");
	   		parametros.put("valor", Integer.parseInt(String.valueOf(producto.getValorCompra())));
			
			System.out.println("[ProductoDAO][modificarProducto] parametros: "+parametros.toString());
			String resource = SQLMAP;
			Reader reader = Resources.getResourceAsReader(resource);
			SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
			System.out.println("[ProductoDAO][modificarProducto] antes de realizar consulta.");
			List resultado = sqlMap.queryForList("modificarProducto", parametros);
			System.out.println("[ProductoDAO][modificarProducto] resultado : "+resultado.toString());
			int respuesta = 0;
			if (resultado != null) {
	                HashMap salida = (HashMap) resultado.get(0);
	                respuesta = (Integer)salida.get("respuesta");
			}
			System.out.println("[ProductoDAO][modificarProducto] respuesta: [["+respuesta+"]]");
			if (respuesta==1){
				return true;
			}else{
				return false;
			}
		}catch(Exception e){
			System.out.println("[ProductoDAO][modificarProducto] ERROR : "+e.getStackTrace());
			throw e;
		}		
	}
}
